<?php
// 公共函数库

/**
 * 数组的合并，并加上html标识前缀
 * @param array $data
 * @param int $pid
 * @param string $html
 * @param int $level
 * @return array
 */
function treeLevel(array $data, int $pid = 0, string $html = '--', int $level = 0) {
    static $arr = [];
    foreach ($data as $val) {
        if ($pid == $val['pid']) {
            $val['html'] = str_repeat($html, $level * 2);
            $val['level'] = $level + 1;
            $arr[] = $val;
            treeLevel($data, $val['id'], $html, $val['level']);
        }
    }
    return $arr;
}

/**
 * 递归成多维数组
 * @param array $data
 * @param int $pid
 * @return array
 */
function subTree(array $data, int $pid = 0) {
    $arr = [];
    foreach ($data as $item) {
        if ($pid == $item['pid']) {
            $item['sub'] = subTree($data, $item['id']);
            $arr[] = $item;
        }
    }
    return $arr;
}
/**
 * @param array $data 传入一个二维数组
 * @param int $pid 默许为o
 */
function subTreeName(array $data, int $pid = 0) {
    # 给一个空的数据
    $arr = [];
    # 循环他传入进来的数据
    foreach ($data as $item) {
        # 判断他传入进来的数据里面的pid是不和他默许的pid相等，如果相等就执行这里面的代码
        if ($pid == $item['pid']) {
            $item['sub'] = subTree($data, $item['id']);
            $arr[$item["field_name"]] = $item;
        }
    }
    return $arr;
}

